home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
et
/
et3_0-a1.lha
/
et3
/
src
/
Menu.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-06-15
|
4KB
|
139 lines
#ifndef Menu_First
#ifdef __GNUG__
//pragma once
#pragma interface
#endif
#define Menu_First
#include "Manager.h"
#include "CompVObject.h"
#include "PopupItem.h"
#include "Separator.h"
class Clipper;
//---- MenuButtonItem ----------------------------------------------------------
const int cItemStateOneOf = 1,
cItemStateManyOf= 2;
class MenuButtonItem : public StateButton {
public:
MetaDef(MenuButtonItem);
MenuButtonItem(int id, char *l= 0, char *s= 0);
MenuButtonItem(int id, VObject *l, char *s= 0);
Metric GetMinSize();
void SetOrigin(Point);
void SetExtent(Point e);
void DrawInner(Rectangle r, bool highlight);
char *AsString();
void SetShortCut(char *sc);
void SetLabel(char *s);
void SetString(char *s);
void InputKbd(Token &t);
int Compare(Object*);
};
//---- Menu --------------------------------------------------------------------
enum MenuOptions {
eMenuTitle = BIT(eEvtLast+1), // show title
eMenuNoScroll = BIT(eEvtLast+2),
eMenuDefault = eMenuTitle,
eMenuLast = eEvtLast + 2
};
class Menu : public Manager {
public:
MetaDef(Menu);
Menu(char *t= 0, bool dimall= TRUE, bool resetAll= TRUE,
int r= 0, int c= 1, SeqCollection *col= 0);
Menu(int id, char *t= 0, bool dimall= TRUE, bool resetAll= TRUE,
int r= 0, int c= 1, SeqCollection *col= 0);
~Menu();
//---- initialize
Window *DoMakeWindows();
VObject *FindItem(int id);
SeqCollection *GetCollection();
void SetCollection(SeqCollection *col, bool freeold= TRUE);
VObject *FindInitialItem(int id);
void Control(int id, int part, void *val);
VObject *FindAnItem(Point p);
int CheckKey(Token &t);
void SetNextHandler(EvtHandler *eh);
EvtHandler *GetNextHandler();
//---- show/hide
virtual int Pulldown(Point, VObject *v= 0);
int Popup(Point, VObject*, int id, bool showlast, int menupos, Rectangle exitr);
Point GetInitialPos(Point e);
//---- submenues
void AppendMenu(Menu*, int id= 999);
//---- inserting items
void Insert(VObject*);
void InsertBefore(int id, VObject*);
void InsertAfter(int id, VObject*);
void InsertItemBefore(int atId, char *, int myId);
void InsertItemAfter(int atId, char *, int myId);
void InsertItemsBefore(int atId, ...);
void InsertItemsAfter(int atId, ...);
void InsertItem(char*, int);
virtual VObject *MakeMenuItem(char *s, int id);
//---- adding items
void Append(VObject*);
void AppendItem(char*, int);
void AppendItems(char *, ...);
//---- replacing items
void ReplaceItem(int id, char *label);
void ToggleItem(int id, bool toggle, char *toggleTrue, char *toggleFalse);
void ToggleItem(int id, bool toggle, char *fmt, char *toggleTrue, char *toggleFalse);
//---- removing items
VObject *RemoveItem(int id);
void RemoveAllItems(bool free= TRUE);
//---- enable/disable items
void EnableItem(int, bool b= TRUE);
void EnableItems(int id, ...);
void EnableAll(bool b= TRUE);
void DisableAll()
{ EnableAll(FALSE); }
void ResetAll();
void DisableItem(int id)
{ EnableItem(id, FALSE); }
void CheckItem(int id, int state= 1, int type= cItemStateOneOf);
//---- set selected item
int GetSelectedId()
{ return selection; }
void SetSelectedItem(int);
//---- find items
Menu *FindMenuItem(int);
//---- input/output
OStream& PrintOn(OStream&);
IStream& ReadFrom(IStream&);
protected:
void InsertVItems(int atId, bool before, char *first, va_list ap);
void Init(int id, char *t, bool da, bool ra, int r, int c, SeqCollection *col);
protected:
VObject *view;
int selection;
Clipper *clipper;
bool resetAll;
bool dimAll;
EvtHandler *nextHandler;
};
#endif